from enum import IntEnum
from typing import overload, NewType, Optional, Tuple

from OCC.Core.Standard import *
from OCC.Core.NCollection import *
from OCC.Core.Transfer import *
from OCC.Core.StepShape import *
from OCC.Core.TopoDS import *
from OCC.Core.StepRepr import *
from OCC.Core.TopLoc import *
from OCC.Core.StepBasic import *
from OCC.Core.StepAP203 import *
from OCC.Core.Interface import *
from OCC.Core.StepGeom import *
from OCC.Core.StepData import *
from OCC.Core.TCollection import *
from OCC.Core.TColStd import *
from OCC.Core.XSControl import *
from OCC.Core.StepVisual import *
from OCC.Core.Quantity import *
from OCC.Core.gp import *

class stepconstruct:
    @staticmethod
    def FindCDSR(
        ComponentBinder: Transfer_Binder,
        AssemblySDR: StepShape_ShapeDefinitionRepresentation,
        ComponentCDSR: StepShape_ContextDependentShapeRepresentation,
    ) -> bool: ...
    @overload
    @staticmethod
    def FindEntity(
        FinderProcess: Transfer_FinderProcess, Shape: TopoDS_Shape
    ) -> StepRepr_RepresentationItem: ...
    @overload
    @staticmethod
    def FindEntity(
        FinderProcess: Transfer_FinderProcess, Shape: TopoDS_Shape, Loc: TopLoc_Location
    ) -> StepRepr_RepresentationItem: ...
    @staticmethod
    def FindShape(
        TransientProcess: Transfer_TransientProcess, item: StepRepr_RepresentationItem
    ) -> TopoDS_Shape: ...

class STEPConstruct_AP203Context:
    def __init__(self) -> None: ...
    def Clear(self) -> None: ...
    def DefaultApproval(self) -> StepBasic_Approval: ...
    def DefaultDateAndTime(self) -> StepBasic_DateAndTime: ...
    def DefaultPersonAndOrganization(self) -> StepBasic_PersonAndOrganization: ...
    def DefaultSecurityClassificationLevel(
        self,
    ) -> StepBasic_SecurityClassificationLevel: ...
    def GetApproval(self) -> StepAP203_CcDesignApproval: ...
    def GetApprovalDateTime(self) -> StepBasic_ApprovalDateTime: ...
    def GetApprover(self) -> StepBasic_ApprovalPersonOrganization: ...
    def GetClassificationDate(self) -> StepAP203_CcDesignDateAndTimeAssignment: ...
    def GetClassificationOfficer(
        self,
    ) -> StepAP203_CcDesignPersonAndOrganizationAssignment: ...
    def GetCreationDate(self) -> StepAP203_CcDesignDateAndTimeAssignment: ...
    def GetCreator(self) -> StepAP203_CcDesignPersonAndOrganizationAssignment: ...
    def GetDesignOwner(self) -> StepAP203_CcDesignPersonAndOrganizationAssignment: ...
    def GetDesignSupplier(
        self,
    ) -> StepAP203_CcDesignPersonAndOrganizationAssignment: ...
    def GetProductCategoryRelationship(
        self,
    ) -> StepBasic_ProductCategoryRelationship: ...
    def GetSecurity(self) -> StepAP203_CcDesignSecurityClassification: ...
    @overload
    def Init(self, sdr: StepShape_ShapeDefinitionRepresentation) -> None: ...
    @overload
    def Init(self, SDRTool: STEPConstruct_Part) -> None: ...
    @overload
    def Init(self, nauo: StepRepr_NextAssemblyUsageOccurrence) -> None: ...
    def InitApprovalRequisites(self) -> None: ...
    def InitAssembly(self, nauo: StepRepr_NextAssemblyUsageOccurrence) -> None: ...
    def InitRoles(self) -> None: ...
    def InitSecurityRequisites(self) -> None: ...
    def RoleApprover(self) -> StepBasic_ApprovalRole: ...
    def RoleClassificationDate(self) -> StepBasic_DateTimeRole: ...
    def RoleClassificationOfficer(self) -> StepBasic_PersonAndOrganizationRole: ...
    def RoleCreationDate(self) -> StepBasic_DateTimeRole: ...
    def RoleCreator(self) -> StepBasic_PersonAndOrganizationRole: ...
    def RoleDesignOwner(self) -> StepBasic_PersonAndOrganizationRole: ...
    def RoleDesignSupplier(self) -> StepBasic_PersonAndOrganizationRole: ...
    def SetDefaultApproval(self, app: StepBasic_Approval) -> None: ...
    def SetDefaultDateAndTime(self, dt: StepBasic_DateAndTime) -> None: ...
    def SetDefaultPersonAndOrganization(
        self, po: StepBasic_PersonAndOrganization
    ) -> None: ...
    def SetDefaultSecurityClassificationLevel(
        self, sc: StepBasic_SecurityClassificationLevel
    ) -> None: ...

class STEPConstruct_Assembly:
    def __init__(self) -> None: ...
    @staticmethod
    def CheckSRRReversesNAUO(
        theGraph: Interface_Graph, CDSR: StepShape_ContextDependentShapeRepresentation
    ) -> bool: ...
    def GetNAUO(self) -> StepRepr_NextAssemblyUsageOccurrence: ...
    def Init(
        self,
        aSR: StepShape_ShapeDefinitionRepresentation,
        SDR0: StepShape_ShapeDefinitionRepresentation,
        Ax0: StepGeom_Axis2Placement3d,
        Loc: StepGeom_Axis2Placement3d,
    ) -> None: ...
    def ItemLocation(self) -> StepGeom_Axis2Placement3d: ...
    def ItemValue(self) -> Standard_Transient: ...
    def MakeRelationship(self) -> None: ...

class STEPConstruct_ContextTool:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, aStepModel: StepData_StepModel) -> None: ...
    def AP203Context(self) -> STEPConstruct_AP203Context: ...
    def AddAPD(self, enforce: Optional[bool] = False) -> None: ...
    def GetACname(self) -> TCollection_HAsciiString: ...
    def GetACschemaName(self) -> TCollection_HAsciiString: ...
    def GetACstatus(self) -> TCollection_HAsciiString: ...
    def GetACyear(self) -> int: ...
    def GetAPD(self) -> StepBasic_ApplicationProtocolDefinition: ...
    def GetDefaultAxis(self) -> StepGeom_Axis2Placement3d: ...
    def GetProductName(self) -> TCollection_HAsciiString: ...
    def GetRootsForAssemblyLink(
        self, assembly: STEPConstruct_Assembly
    ) -> TColStd_HSequenceOfTransient: ...
    def GetRootsForPart(
        self, SDRTool: STEPConstruct_Part
    ) -> TColStd_HSequenceOfTransient: ...
    def Index(self) -> int: ...
    def IsAP203(self) -> bool: ...
    def IsAP214(self) -> bool: ...
    def IsAP242(self) -> bool: ...
    def Level(self) -> int: ...
    def NextIndex(self) -> None: ...
    def NextLevel(self) -> None: ...
    def PrevIndex(self) -> None: ...
    def PrevLevel(self) -> None: ...
    def SetACname(self, name: TCollection_HAsciiString) -> None: ...
    def SetACschemaName(self, schemaName: TCollection_HAsciiString) -> None: ...
    def SetACstatus(self, status: TCollection_HAsciiString) -> None: ...
    def SetACyear(self, year: int) -> None: ...
    def SetGlobalFactor(self, theGlobalFactor: StepData_Factors) -> None: ...
    def SetIndex(self, ind: int) -> None: ...
    def SetLevel(self, lev: int) -> None: ...
    def SetModel(self, aStepModel: StepData_StepModel) -> None: ...

class STEPConstruct_Part:
    def __init__(self) -> None: ...
    def AC(self) -> StepBasic_ApplicationContext: ...
    def ACapplication(self) -> TCollection_HAsciiString: ...
    def IsDone(self) -> bool: ...
    def MakeSDR(
        self,
        aShape: StepShape_ShapeRepresentation,
        aName: TCollection_HAsciiString,
        AC: StepBasic_ApplicationContext,
        theStepModel: StepData_StepModel,
    ) -> None: ...
    def PC(self) -> StepBasic_ProductContext: ...
    def PCdisciplineType(self) -> TCollection_HAsciiString: ...
    def PCname(self) -> TCollection_HAsciiString: ...
    def PD(self) -> StepBasic_ProductDefinition: ...
    def PDC(self) -> StepBasic_ProductDefinitionContext: ...
    def PDCname(self) -> TCollection_HAsciiString: ...
    def PDCstage(self) -> TCollection_HAsciiString: ...
    def PDF(self) -> StepBasic_ProductDefinitionFormation: ...
    def PDFdescription(self) -> TCollection_HAsciiString: ...
    def PDFid(self) -> TCollection_HAsciiString: ...
    def PDS(self) -> StepRepr_ProductDefinitionShape: ...
    def PDSdescription(self) -> TCollection_HAsciiString: ...
    def PDSname(self) -> TCollection_HAsciiString: ...
    def PDdescription(self) -> TCollection_HAsciiString: ...
    def PRPC(self) -> StepBasic_ProductRelatedProductCategory: ...
    def PRPCdescription(self) -> TCollection_HAsciiString: ...
    def PRPCname(self) -> TCollection_HAsciiString: ...
    def Pdescription(self) -> TCollection_HAsciiString: ...
    def Pid(self) -> TCollection_HAsciiString: ...
    def Pname(self) -> TCollection_HAsciiString: ...
    def Product(self) -> StepBasic_Product: ...
    def ReadSDR(self, aShape: StepShape_ShapeDefinitionRepresentation) -> None: ...
    def SDRValue(self) -> StepShape_ShapeDefinitionRepresentation: ...
    def SRValue(self) -> StepShape_ShapeRepresentation: ...
    def SetACapplication(self, text: TCollection_HAsciiString) -> None: ...
    def SetPCdisciplineType(self, label: TCollection_HAsciiString) -> None: ...
    def SetPCname(self, name: TCollection_HAsciiString) -> None: ...
    def SetPDCname(self, label: TCollection_HAsciiString) -> None: ...
    def SetPDCstage(self, label: TCollection_HAsciiString) -> None: ...
    def SetPDFdescription(self, text: TCollection_HAsciiString) -> None: ...
    def SetPDFid(self, id: TCollection_HAsciiString) -> None: ...
    def SetPDSdescription(self, text: TCollection_HAsciiString) -> None: ...
    def SetPDSname(self, label: TCollection_HAsciiString) -> None: ...
    def SetPDdescription(self, text: TCollection_HAsciiString) -> None: ...
    def SetPRPCdescription(self, text: TCollection_HAsciiString) -> None: ...
    def SetPRPCname(self, label: TCollection_HAsciiString) -> None: ...
    def SetPdescription(self, text: TCollection_HAsciiString) -> None: ...
    def SetPid(self, id: TCollection_HAsciiString) -> None: ...
    def SetPname(self, label: TCollection_HAsciiString) -> None: ...

class STEPConstruct_Tool:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, WS: XSControl_WorkSession) -> None: ...
    def FinderProcess(self) -> Transfer_FinderProcess: ...
    def Graph(self, recompute: Optional[bool] = False) -> Interface_Graph: ...
    def Model(self) -> Interface_InterfaceModel: ...
    def TransientProcess(self) -> Transfer_TransientProcess: ...
    def WS(self) -> XSControl_WorkSession: ...

class STEPConstruct_UnitContext:
    def __init__(self) -> None: ...
    def AreaDone(self) -> bool: ...
    def AreaFactor(self) -> float: ...
    @overload
    def ComputeFactors(
        self,
        aContext: StepRepr_GlobalUnitAssignedContext,
        theLocalFactors: Optional[StepData_Factors] = StepData_Factors(),
    ) -> int: ...
    @overload
    def ComputeFactors(
        self,
        aUnit: StepBasic_NamedUnit,
        theLocalFactors: Optional[StepData_Factors] = StepData_Factors(),
    ) -> int: ...
    def ComputeTolerance(
        self, aContext: StepRepr_GlobalUncertaintyAssignedContext
    ) -> int: ...
    @staticmethod
    def ConvertSiPrefix(aPrefix: StepBasic_SiPrefix) -> float: ...
    def HasUncertainty(self) -> bool: ...
    def Init(
        self,
        Tol3d: float,
        theModel: StepData_StepModel,
        theLocalFactors: Optional[StepData_Factors] = StepData_Factors(),
    ) -> None: ...
    def IsDone(self) -> bool: ...
    def LengthDone(self) -> bool: ...
    def LengthFactor(self) -> float: ...
    def PlaneAngleDone(self) -> bool: ...
    def PlaneAngleFactor(self) -> float: ...
    def SolidAngleDone(self) -> bool: ...
    def SolidAngleFactor(self) -> float: ...
    def StatusMessage(self, status: int) -> str: ...
    def Uncertainty(self) -> float: ...
    def Value(
        self,
    ) -> StepGeom_GeomRepContextAndGlobUnitAssCtxAndGlobUncertaintyAssCtx: ...
    def VolumeDone(self) -> bool: ...
    def VolumeFactor(self) -> float: ...

class STEPConstruct_ExternRefs(STEPConstruct_Tool):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, WS: XSControl_WorkSession) -> None: ...
    def AddExternRef(
        self, filename: str, PD: StepBasic_ProductDefinition, format: str
    ) -> int: ...
    def Clear(self) -> None: ...
    def DocFile(self, num: int) -> StepBasic_DocumentFile: ...
    def FileName(self, num: int) -> str: ...
    def Format(self, num: int) -> TCollection_HAsciiString: ...
    def GetAP214APD(self) -> StepBasic_ApplicationProtocolDefinition: ...
    def Init(self, WS: XSControl_WorkSession) -> bool: ...
    def LoadExternRefs(self) -> bool: ...
    def NbExternRefs(self) -> int: ...
    def ProdDef(self, num: int) -> StepBasic_ProductDefinition: ...
    def SetAP214APD(self, APD: StepBasic_ApplicationProtocolDefinition) -> None: ...
    def WriteExternRefs(self, num: int) -> int: ...
    def checkAP214Shared(self) -> None: ...

class STEPConstruct_Styles(STEPConstruct_Tool):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, WS: XSControl_WorkSession) -> None: ...
    @overload
    def AddStyle(self, style: StepVisual_StyledItem) -> None: ...
    @overload
    def AddStyle(
        self,
        item: StepRepr_RepresentationItem,
        PSA: StepVisual_PresentationStyleAssignment,
        Override: StepVisual_StyledItem,
    ) -> StepVisual_StyledItem: ...
    @overload
    def AddStyle(
        self,
        Shape: TopoDS_Shape,
        PSA: StepVisual_PresentationStyleAssignment,
        Override: StepVisual_StyledItem,
    ) -> StepVisual_StyledItem: ...
    def ClearStyles(self) -> None: ...
    def CreateMDGPR(
        self,
        Context: StepRepr_RepresentationContext,
        MDGPR: StepVisual_MechanicalDesignGeometricPresentationRepresentation,
        theStepModel: StepData_StepModel,
    ) -> bool: ...
    def CreateNAUOSRD(
        self,
        Context: StepRepr_RepresentationContext,
        CDSR: StepShape_ContextDependentShapeRepresentation,
        initPDS: StepRepr_ProductDefinitionShape,
    ) -> bool: ...
    @staticmethod
    def DecodeColor(Colour: StepVisual_Colour, Col: Quantity_Color) -> bool: ...
    @overload
    @staticmethod
    def EncodeColor(Col: Quantity_Color) -> StepVisual_Colour: ...
    @overload
    @staticmethod
    def EncodeColor(
        Col: Quantity_Color,
        DPDCs: STEPConstruct_DataMapOfAsciiStringTransient,
        ColRGBs: STEPConstruct_DataMapOfPointTransient,
    ) -> StepVisual_Colour: ...
    def FindContext(self, Shape: TopoDS_Shape) -> StepRepr_RepresentationContext: ...
    def GetColorPSA(
        self, item: StepRepr_RepresentationItem, Col: StepVisual_Colour
    ) -> StepVisual_PresentationStyleAssignment: ...
    def GetColors(
        self,
        theStyle: StepVisual_StyledItem,
        theSurfaceColour: StepVisual_Colour,
        theBoundaryColour: StepVisual_Colour,
        theCurveColour: StepVisual_Colour,
        theRenderColour: StepVisual_Colour,
    ) -> Tuple[bool, float, bool]: ...
    def Init(self, WS: XSControl_WorkSession) -> bool: ...
    def LoadInvisStyles(self, InvSyles: TColStd_HSequenceOfTransient) -> bool: ...
    def LoadStyles(self) -> bool: ...
    def MakeColorPSA(
        self,
        item: StepRepr_RepresentationItem,
        SurfCol: StepVisual_Colour,
        CurveCol: StepVisual_Colour,
        RenderCol: StepVisual_Colour,
        RenderTransp: float,
        isForNAUO: Optional[bool] = False,
    ) -> StepVisual_PresentationStyleAssignment: ...
    def NbRootStyles(self) -> int: ...
    def NbStyles(self) -> int: ...
    def RootStyle(self, i: int) -> StepVisual_StyledItem: ...
    def Style(self, i: int) -> StepVisual_StyledItem: ...

class STEPConstruct_ValidationProps(STEPConstruct_Tool):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, WS: XSControl_WorkSession) -> None: ...
    def AddArea(self, Shape: TopoDS_Shape, Area: float) -> bool: ...
    def AddCentroid(
        self, Shape: TopoDS_Shape, Pnt: gp_Pnt, instance: Optional[bool] = False
    ) -> bool: ...
    @overload
    def AddProp(
        self,
        Shape: TopoDS_Shape,
        Prop: StepRepr_RepresentationItem,
        Descr: str,
        instance: Optional[bool] = False,
    ) -> bool: ...
    @overload
    def AddProp(
        self,
        target: StepRepr_CharacterizedDefinition,
        Context: StepRepr_RepresentationContext,
        Prop: StepRepr_RepresentationItem,
        Descr: str,
    ) -> bool: ...
    def AddVolume(self, Shape: TopoDS_Shape, Vol: float) -> bool: ...
    def FindTarget(
        self,
        S: TopoDS_Shape,
        target: StepRepr_CharacterizedDefinition,
        Context: StepRepr_RepresentationContext,
        instance: Optional[bool] = False,
    ) -> bool: ...
    def GetPropNAUO(
        self, PD: StepRepr_PropertyDefinition
    ) -> StepRepr_NextAssemblyUsageOccurrence: ...
    def GetPropPD(
        self, PD: StepRepr_PropertyDefinition
    ) -> StepBasic_ProductDefinition: ...
    def GetPropPnt(
        self,
        item: StepRepr_RepresentationItem,
        Context: StepRepr_RepresentationContext,
        Pnt: gp_Pnt,
        theLocalFactors: Optional[StepData_Factors] = StepData_Factors(),
    ) -> bool: ...
    def GetPropReal(
        self,
        item: StepRepr_RepresentationItem,
        theLocalFactors: Optional[StepData_Factors] = StepData_Factors(),
    ) -> Tuple[bool, float, bool]: ...
    @overload
    def GetPropShape(self, ProdDef: StepBasic_ProductDefinition) -> TopoDS_Shape: ...
    @overload
    def GetPropShape(self, PD: StepRepr_PropertyDefinition) -> TopoDS_Shape: ...
    def Init(self, WS: XSControl_WorkSession) -> bool: ...
    def LoadProps(self, seq: TColStd_SequenceOfTransient) -> bool: ...
    def SetAssemblyShape(self, shape: TopoDS_Shape) -> None: ...

# harray1 classes
# harray2 classes
# hsequence classes
